package com.own.component.store.core.util;

import java.util.concurrent.TimeUnit;

/**
 * RateLimiterUtil
 *
 * @author chenxueli
 * @date 2024-04-16 14:55:00
 */
public interface RateLimiterUtil {

    /**
     * 获取RateLimiter
     *
     * @param name         名称
     * @param rate         速率
     * @param rateInterval 速率间隔
     * @param unit         单位
     */
    void create(
            String name,
            long rate,
            long rateInterval,
            TimeUnit unit
    );

    /**
     * 尝试获取
     *
     * @param name 名称
     * @return 是否获取成功
     */
    boolean tryAcquire(String name);

}
